As computers handle ever increasing amounts of data, the performance and reliability of the data storage systems must be improved. Redundant Arrays of Inexpensive Disks (RAID), among other systems, satisfy the performance and reliability requirements. In a RAID system, a host computer controls multiple hard disk drives, as though the disk drives were a single hard disk. To improve reliability, RAID systems store parity data in addition to the user's data. If a disk drive fails, the parity data is used to reconstruct the data on the failed disk drive. RAID systems compute parity data using an exclusive OR (XOR) operation on the user data. If one of the disk drives fails, the data in the failed disk drive is reconstructed by XOR'ing the data stored in the remaining disks. Therefore, RAID systems are not only capable of storing large amounts of data, but are also highly reliable.
Recently, there has been a growing demand for simpler systems capable of transferring data at higher speeds. To meet this demand, a RAID system can be provided with shared data buses, e.g., a dual bus configuration. Shared data buses both reduce the number of buses and simplify the system configuration. One conventional example is described in an article entitled "Configuration of RAID Subsystem with ATA Storage Means," The Institute of Electronics, Information and Communication Engineers meeting in the Fall of 1994, D-88. The article describes a RAID subsystem having shared data buses, and also having a crossbar switch connected between each hard disk drive and each shared data bus.
FIG. 1 is a block diagram of a conventional data storage system. Four hard disk drives (HDDs) HDD0-HDD3 are connected to two data buses DD0, DD1. HDD0 and HDD1 directly connect to data buses DD0 and DD1. HDD2 and HDD3 connect to data buses DD0 and DD1 via a crossbar switch 101. The data buses DD0, DD1 and hard disk drives HDD2, HDD3 can be connected, as appropriate, via the crossbar switch 101. Control lines (not shown) connected to a data path controller (not shown) control read and write operations to each HDD. A parity generation circuit 103 generates parity and connects to the data buses DD0 and DD1. A parity buffer memory 105, also connected to the parity generation circuit 103, temporarily stores data, including parity data.
Storage systems are connected to host computers, and host computers have a central processing unit (CPU). Typically, in storage systems having rotating media, such as a hard, optical or magneto-optical disk drive, the access speed of the storage system is slower than the CPU processing speed. One reason for the speed gap is that disk drives have a slow data transfer speed. The more important reason is that disk drives can generate a wait request, e.g. from a seek operation, at any time during the data transfer. When a wait request occurs, the entire bus cycle halts until the wait request is cleared. Therefore, the data transfer speed of the data storage system is extremely slow when compared to the processing speed of the host computer. Even if a system uses solid-state memory, such as EEPROM, as the storage means, a similar problem may occur if the access speed of the storage means is slower than the processing speed of the host's CPU. Consequently, the storage system design is complicated because of timing and control needed to handle the asynchronous wait requests.